package com.party.notify.notifyPush.officialPartner;

import com.party.core.model.crowdfund.Project;
import com.party.core.model.member.Member;
import com.party.core.model.member.MemberGroup;
import com.party.core.model.order.OrderForm;

import java.util.List;
import java.util.Map;

/**
 * 合作商消息推送
 * Created by wei.li
 *
 * @date 2017/9/8 0008
 * @time 10:53
 */
public interface IOfficialPartnerNotifySendService {


    /**
     * 发起众筹通知
     *
     * @param project  项目
     * @param member   会员
     * @param receiver 接受者
     */
    void sendCrowdfundApply(Project project, Member member, MemberGroup receiver);

    /**
     * 众筹成功通知
     *
     * @param orderForm       订单
     * @param crowdfundMember 会员
     * @param orgMember       接受者
     * @param projectId       众筹id
     */
    void sendCrowdfundSuccess(OrderForm orderForm, Member crowdfundMember, MemberGroup orgMember, String projectId);


    /**
     * 报名成功
     *
     * @param userName   用户名
     * @param title      题目
     * @param activityId 活动编号
     * @param phone      电话
     * @param builderId  发布者
     */
    void sendActivityApply(String userName, String title, String activityId, String phone, String builderId);

    /**
     * 短信预警
     *
     * @param userName  机构名称
     * @param phone     电话
     * @param builderId 机构id
     * @param quantity  剩余数量
     */
    void sendSmsWarn(String userName, String phone, String builderId, Integer quantity);

    /**
     * 重要通知
     *
     * @param sysMessageId 系统消息id
     * @param memberIds    接收对象
     */
    void sendImportantNotify(String sysMessageId, List<String> memberIds);

    void notifyYesterday(Map<String, Object> params, String authorId, String mobile);

    void notifyLastWeek(Map<String, Object> params, String authorId, String mobile);

    void notifyLastMonth(Map<String, Object> params, String authorId, String mobile);


    /**
     * 发起众筹通知
     *
     * @param project  项目
     * @param member   会员
     * @param orgMember 接受者
     */
    void gradationSendCrowdfundApply(Project project, Member member, MemberGroup orgMember);


    void gradationSendCrowdfundSuccess(Project project,Member member, MemberGroup orgMember);

    /**
     * 行知公社新会员加入
     *
     * @param memberId  用户id
     * @param partnerId 机构id
     * @param pmId      机构和用户的关系id
     * @author yifeng
     * @date 18:04 2019/11/20
     **/
    void xzgsNewMemberNotify(String memberId, String partnerId, String pmId);
}
